package vip.xiaonuo.biz.modular.event.service;

import vip.xiaonuo.biz.modular.cabinetdoor.vo.BizCabinetDoorResp;
import vip.xiaonuo.biz.modular.cabinetinfo.entity.BizCabinetInfo;
import vip.xiaonuo.biz.modular.event.entity.BizEvent;
import vip.xiaonuo.biz.modular.goods.entity.BizGoods;
import vip.xiaonuo.biz.modular.goods.result.GoodsLedgerPageResult;

import java.util.Map;

/**
 * 事件-关键字替换
 * @author 墨塵
 * @since 2022/12/2
 */
public interface BizEventReplaceService {
    /**
     * 获取柜子名称
     *
     * @param cabCode
     * @return
     */
    String getCabName(String cabCode);

    /**
     * 获取柜子信息
     * @param cabCode
     * @return
     */
    BizCabinetInfo getCabInfo(String cabCode);

    /**
     * 获取用户名称
     *
     * @param userId
     * @return
     */
    String getUserName(String userId);

    /**
     * 获取物品名称
     *
     * @param goods
     * @return
     */
     String getGoodsNameForEntity(BizGoods goods);

    /**
     * 获取物品名称
     *
     * @param ledgerPageResult
     * @return
     */
    String getGoodsNameForLedger(GoodsLedgerPageResult ledgerPageResult );

    /**
     * 获取柜门名称
     * @param cabCode
     * @param cabDoorCode
     * @return
     */
    String getCbaDoorNameForCode(String cabCode, String cabDoorCode);

    /**
     * 获取柜门名称
     * @param cabId
     * @param cabDoorId
     * @return
     */
    String getCbaDoorNameForId(String cabId, String cabDoorId);

    /**
     * 获取柜门集合
     * @param cabCode
     * @param cabDoorCode
     * @return
     */
    BizCabinetDoorResp getCbaDoorRespForCode(String cabCode, String cabDoorCode);

    /**
     * 获取柜门集合
     * @param cabId
     * @param cabDoorId
     * @return
     */
    BizCabinetDoorResp getCbaDoorRespForId(String cabId, String cabDoorId);

    /**
     * 清空BizEvent
     * @param event
     */
    void clearBizEvent(BizEvent event);

    /**
     * 发送邮件-用户
     * @param userId
     * @param event
     */
    void sendEmailForUser(String userId,BizEvent event);

    /**
     * 发送邮件-柜门管理员
     * @param event
     */
    void sendEmailForDoorAdmin(BizEvent event);

    /**
     * 发送邮件-柜子管理员
     * @param event
     */
    void sendEmailForCabAdmin(BizEvent event);

    /**
     * 发送短信-用户
     * @param userId
     * @param event
     * @param smsId
     * @param content
     */
    void sendSmsForUser(String userId,BizEvent event,String smsId,Map<String,String> content);

    /**
     * 发送短信-柜门管理员
     * @param event
     * @param smsId
     * @param content
     */
    void sendSmsForDoorAdmin(BizEvent event, String smsId, Map<String,String> content);

    /**
     * 发送短信-柜子管理员
     * @param event
     * @param smsId
     * @param content
     */
    void sendSmsForCabAdmin(BizEvent event, String smsId, Map<String,String> content);

    /**
     * 类目切换
     * @param event
     * @param goods
     */
    void itemSwitch(BizEvent event,Integer goodsType);
}
